package com.ymx.darling.session.setting;

import com.ymx.darling.dialect.page.PageBody;
import com.ymx.darling.session.setting.relation.RelationSelector;

/**
 * 查询配置类
 * 执行查询前的配置 该配置的有效为一次数据库查询
 * 需要注意查询前进行设置时需要确保和调用查询方法的原子操作
 * @author 爱Java的小于
 */
public class QuerySetting {
    /**
     * 批量插入的批次大小
     * @param batchSize 批次大小
     */
    public static void setInsertBatchSize(int batchSize) {
        Context.setInsertBatchSize(batchSize);
    }


    /**
     * 设置分页数据
     * @param pageNum 第几页
     * @param pageSize 页的大小
     */
    public static void setPage(int pageNum, int pageSize) {
        Context.setPage(new PageBody(pageNum, pageSize));
    }

    /**
     * 设置关联查询时的嵌套参数
     * @param key 参数名
     * @param value 参数值
     */
    public static void setNestedParam(String key, Object value) {
        Context.setNestedParam(key, value);
    }

    /**
     * 返回一个关联查询选择器
     * 该选择器用于关联查询时选择关联字段
     * @return 关联选择器
     */
    public static RelationSelector getRelationSelector() {
        RelationSelector relationSelector = new RelationSelector();
        Context.setRelationSelector(relationSelector);
        return relationSelector;
    }
}
